package cron

import (
	"aqielife.cn/spider/db"
	"aqielife.cn/spider/starter"
	_ "fmt"
	"github.com/robfig/cron/v3"
	"log"

	_ "time"
)

var (
	BaseUrl = "http://xinhuanet.com"
)

//定义定时器调用的任务函数
func Task() {
	db.InitDB()
	controller := starter.NewStarter(BaseUrl)
	// logger.Infoln("ctrl", controller)
	controller.Start()
	//延时关闭数据库连接
	sqlDB, _ := db.DB.DB()
	defer sqlDB.Close()
}

// https://blog.csdn.net/qq_43058685/article/details/123843956
// https://zhuanlan.zhihu.com/p/542087269
func DoTask(spec string, fun func()) {
	// 新建一个定时任务对象
	// 根据cron表达式进行时间调度，cron可以精确到秒，大部分表达式格式也是从秒开始。
	//crontab := cron.New()  默认从分开始进行时间调度
	crontab := cron.New(cron.WithSeconds()) //精确到秒

	// 添加定时任务,
	crontab.AddFunc(spec, fun)
	// 启动定时器
	crontab.Start()
	log.Println("crontab Start success!")
	defer crontab.Stop()
	// 定时任务是另起协程执行的,这里使用 select 简答阻塞.实际开发中需要
	// 根据实际情况进行控制
	select {} //阻塞主线程停止

}
